java.io.IOException: CreateProcess error=2, ????????? |
您所在的位置:网站首页 › java processbuilder报错 › java.io.IOException: CreateProcess error=2, ????????? |
最近由于工作需要,使用java在调用cmd程序时,为了避免在路径当中有多个空格(例如:c:\\aa a\t t\m m),所以使用了 Runtime time = Runtime.getRuntime(); try{ time.exec(new String[]{"Sp.exe"}, null, new File(args[1])); }catch(Exception e){ e.printStackTrace(); } 遇到了java.io.IOException: CreateProcess error=2, ?????????异常,找了很多原因都没有弄明白,然而使用 time.exec(new String[]{"java","-jar","Sp.jar"}, null, new File(args[1]));就可以! 如果使用:(前提是不能有不规则的空格出现) Runtime time = Runtime.getRuntime(); try{ String command = "args[1]"+File.separator+Sp.exe; time.exec(command); }catch(Exception e){ e.printStackTrace(); } 也可以,同样在底层都是使用的ProcessBuilder去创建的进程,只是传递的参数不一样,结果就不一样。 我的理解是,在java中去执行exe文件,使用第一种方式,目录中windows在执行程序Sp.exe时,与主程序的工作目录不一样,就是说user.dir不一样,因为进程的工作目录不同,所以在创建进程时报错。 虽然你能在java程序中遍历到你需要的文件。 为了避免出现多个空格的情况,继续实验,最终找到了解决的方案: Runtime time = Runtime.getRuntime(); try{ time.exec(new String[]{"cmd","/c","Sp.exe"}, null, new File(args[1])); }catch(Exception e){ e.printStackTrace(); } cmd /c中具体含义,你在dos中输入 cmd /?就可以查看 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |